package com.lenovo.hawk.config;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

import java.util.Map;

/**
 * 配置动态数据源
 */
public class DynamicDataSource extends AbstractRoutingDataSource {
    private Map<Object, Object> targetDataSources;

    @Override
    protected Object determineCurrentLookupKey() {
        return DataSourceHolder.getDataSource();
    }

    /**
     * 设置数据源
     *
     * @param dataSources
     */
    public void setDataSources(Map<Object, Object> dataSources) {
        super.setTargetDataSources(dataSources);
        // 将数据源的 key 放到数据源上下文的 key 集合中，用于切换时判断数据源是否有效
        DataSourceHolder.addDataSourceKeys(dataSources.keySet());
    }

    public Map<Object, Object> getDataSources() {
        return targetDataSources;
    }

}
